class PaginasController < ApplicationController  
  verify  :method => :post, 
          :only => [ :insertar, :actualizar ],
          :redirect_to => { :controller => 'portada', :action => 'ver' }
          
  before_filter :validar_admin, :only => [ :listar_admin, :nueva, :insertar, :editar, :actualizar, :ordenar, :borrar ]
  before_filter :cargar_pagina, :only => [ :ficha, :editar, :actualizar, :borrar ]
  
  
  def listar
    if es_admin?
      @paginas = Pagina.find( :all, :order => 'orden asc' )
    else
      @paginas = Pagina.find( :all, :order => 'orden asc' , :conditions => "estado = '#{Pagina::PUBLICADA}'" )
    end
  end
  
  def listar_admin
    @paginas = Pagina.find( :all, :conditions => "categoria_id = '#{params[:categoria_id]}'", :order => 'orden asc' )
    @categoria = PaginasCategoria.find_by_id( params[:categoria_id] )
  end
  
  def ordenar
    params["orden"].each_with_index do |id, index|
      pagina = Pagina.find_by_id( id );
      pagina.orden = (index+1) * 10
      pagina.save
    end
    
    flash[:info] = "El orden se ha actualizado correctamente"
    redirect_to admin_paginas_listar_url( params[:categoria_id] )
  end
  
  def ficha
  end
  
  def nueva
    @pagina = Pagina.new
    @pagina.estado = Pagina::BORRADOR
  end
  
  def insertar
    @pagina = Pagina.new( params[:pagina] )
    
    if @pagina.save
      flash[:info] = 'Página creada muy bien.'
      redirect_to paginas_ficha_url( @pagina.titulo_sanitizado )
    else
      flash[:error] = 'Algún error se ha producido, vuelve a intentarlo.'
      render :action => 'nueva'
    end
  end
  
  def editar
  end
  
  def actualizar
    @pagina.update_attributes( params[:pagina] )
    
    if @pagina.save
      flash[:info] = 'Página actualizado muy bien.'
      redirect_to paginas_ficha_url( @pagina.titulo_sanitizado )
    else
      flash[:error] = 'Algún error se ha producido, vuelve a intentarlo.'
      render :action => 'editar'
    end    
  end
  
  def borrar
    categoria_id = @pagina.categoria.id
    if @pagina.destroy
      flash[:info] = 'Página borrada muy bien.'
      redirect_to admin_paginas_listar_url( categoria_id )
    else
      flash[:error] = 'Algún error se ha producido, vuelve a intentarlo.'
      redirect_to paginas_ficha_url( @pagina.titulo_sanitizado )
    end
  end

  protected
    def menu_activado
      # nada
    end
    
    def cargar_pagina
      if es_admin?
        @pagina = Pagina.find_by_titulo_sanitizado( params[:titulo_sanitizado] )
      else
        @pagina = Pagina.find_by_titulo_sanitizado( params[:titulo_sanitizado], :conditions => "estado = '#{Pagina::PUBLICADA}'" )
      end

      if not @pagina
        render_404
      end
    end
end